package cn.iocoder.yudao.module.pay.api.order.dto;

import cn.iocoder.yudao.module.pay.enums.order.PayOrderStatusEnum;
import java.time.LocalDateTime;
import javax.validation.constraints.NotNull;
import lombok.Data;

/**
 * 支付单信息 Response DTO
 *
 * @author 芋道源码
 */
@Data
public class PayOrderRespDTO {

    /**
     * 订单编号，数据库自增
     */
    private Long id;
    /**
     * 应用编号
     */
    private Long appId;
    /**
     * 渠道编码
     *
     * 枚举 PayChannelEnum
     */
    private String channelCode;

    // ========== 商户相关字段 ==========
    /**
     * 商户订单编号
     * 例如说，内部系统 A 的订单号。需要保证每个 PayMerchantDO 唯一
     */
    private String merchantOrderId;

    // ========== 订单相关字段 ==========
    /**
     * 商品标题
     */
    private String subject;
    /**
     * 商品描述信息
     */
    private String body;
    /**
     * 支付金额，单位：分
     */
    private Integer price;
    /**
     * 支付状态
     *
     * 枚举 {@link PayOrderStatusEnum}
     */
    private Integer status;

    // ========== 渠道相关字段 ==========


    /**
     * 支付过期时间
     */
    private LocalDateTime expireTime;

    /**
     * 用户 IP
     */
    private String userIp;

    /**
     * 币种
     */
    private String currencyCode;

    /**
     * 支付金额(折算汇率后)，单位：分
     */
    private Integer paymentPrice;
    /**
     * 退款总金额(折算汇率后)，单位：分
     */
    private Integer refundPaymentPrice;

    /**
     * 支付成功的外部订单号
     */
    private String no;

    /**
     * 渠道订单号
     */
    private String channelOrderNo;

}
